package com.rpc.consumer.client;

import com.rpc.common.exception.RPCConfigException;
import lombok.Getter;
import org.apache.logging.log4j.util.PropertiesUtil;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

@Getter
public class ConsumerConfigure {
    private String defaultVersion="1.0.0";
    private String centerAddress;
    //服务注册中心默认端口号
    private int centerPort=9000;
    private Properties properties;

    public ConsumerConfigure(String filePath) {
        //使用ClassLoader加载properties配置文件生成对应的输入流
        InputStream in = PropertiesUtil.class.getClassLoader().getResourceAsStream(filePath);
        //使用properties对象加载输入流
        properties=new Properties();
        try {
            properties.load(in);
            initProperties();
        } catch (IOException e) {
            System.out.println("加载配置文件失败");
            e.printStackTrace();
        }
    }

    /**
     * 初始化配置信息
     * @throws RPCConfigException 本机的服务发布方的地址和服务注册中心的地址必须给出，否则会抛出异常
     */
    private void initProperties() throws RPCConfigException {

        String defaultVersion1=properties.getProperty("defaultVersion");
        if(defaultVersion1!=null&&!defaultVersion1.isEmpty()){
            defaultVersion=defaultVersion1;
        }

        String address=properties.getProperty("serverAddress");
        if(address!=null&&!address.isEmpty()){
            centerAddress=address;
        }else{
            throw new RPCConfigException("服务注册中心的地址未配置");
        }

        String port=properties.getProperty("serverPort");
        if(port!=null&&!port.isEmpty()){
            centerPort=Integer.parseInt(port);
        }
    }


}
